#pragma once

#ifdef FE_PLATFORM_WINDOWS

	#ifdef FE_BUILD_DLL
		#define FYSICS_API __declspec(dllexport)
	#else
		#define FYSICS_API __declspec(dllimport)
	#endif

#else
	#error Fysics only supports Windows!
#endif

#define BIT(X) (1 << X)

#ifdef FE_ENABLE_ASSERTS
	#define FE_ASSERT(x, ...) { if (!(x)) { printf("Assertion Failed: %s", __VA_ARGS__); __debugbreak(); }}
#else
	#define FE_ASSERT(x, ...)
#endif

#define BIND_EVENT_FN(fn) std::bind(&fn, this, std::placeholders::_1)